{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "view-in-github"
},
"source": [
"
"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "2CkrgqciiwHJ"
},
"source": [
"# Example 4th order Runge Kutta\n",
"\n",
"The general form of the differential equation\n",
"\\begin{equation} y^{'}=t-y, \\ \\ (0 \\leq t \\leq 2) \\end{equation}\n",
"with the initial condition\n",
"\\begin{equation}y(0)=1,\\end{equation}\n",
"Has the exact solution. \\begin{equation} y= 2e^{-t}+t-1.\\end{equation}\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Bn8ulRQfiwHK"
},
"source": [
"#### Setting up Libraries"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"id": "13OrAvU_iwHL"
},
"outputs": [],
"source": [
"import numpy as np\n",
"import math \n",
"\n",
"%matplotlib inline\n",
"import matplotlib.pyplot as plt # side-stepping mpl backend\n",
"import matplotlib.gridspec as gridspec # subplots\n",
"import warnings\n",
"\n",
"warnings.filterwarnings(\"ignore\")\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "2WMllWf6iwHR"
},
"source": [
"## Defining the function\n",
"\\begin{equation}f(t,y)=t-y\\end{equation}"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"id": "--2I3VnQiwHS"
},
"outputs": [],
"source": [
"def myfun_ty(t,y):\n",
" return t-y"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "O-O26YVeiwHV"
},
"source": [
"## Initial Setup\n",
"Defining the step size $h$ from the interval range $a\\leq t \\leq b$ and number of steps $N$\n",
"\\begin{equation}h=\\frac{b-a}{h}.\\end{equation}\n",
"This gives the discrete time steps,\n",
"\\begin{equation}t_{i}=t_0+ih,\\end{equation}\n",
"where $t_0=a$."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"id": "Cu78WjZziwHW"
},
"outputs": [],
"source": [
"# Start and end of interval\n",
"b=2\n",
"a=0\n",
"# Step size\n",
"N=4\n",
"h=(b-a)/(N)\n",
"t=np.arange(a,b+h,h)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "4aeaLmHSiwHY"
},
"source": [
"## Setting up the initial conditions of the equation\n",
"\\begin{equation}w_0=IC\\end{equation}\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"id": "p4nV_AdhiwHZ"
},
"outputs": [],
"source": [
"# Initial Condition\n",
"IC=1\n",
"w=np.zeros(N+1)\n",
"y=(IC+1)*np.exp(-t)+t-1#np.zeros(N+1)\n",
"w[0]=IC"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "TTLxIu5BiwHb"
},
"source": [
"## 4th Order Runge Kutta \n",
"\\begin{equation}k_1=f(t,y),\\end{equation}\n",
"\\begin{equation}k_2=f(t+\\frac{h}{2},y+\\frac{h}{2}k_2),\\end{equation}\n",
"\\begin{equation}k_3=f(t+\\frac{h}{2},y+\\frac{h}{2}k_2),\\end{equation}\n",
"\\begin{equation}k_4=f(t+\\frac{h}{2},y+\\frac{h}{2}k_3),\\end{equation}\n",
"\\begin{equation}w_{i+1}=w_{i}+\\frac{h}{6}(k_1+2k_2+2k_3+k_4).\\end{equation}"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"id": "BVbEmJiiiwHb"
},
"outputs": [],
"source": [
"for k in range (0,N):\n",
" k1=myfun_ty(t[k],w[k])\n",
" k2=myfun_ty(t[k]+h/2,w[k]+h/2*k1)\n",
" k3=myfun_ty(t[k]+h/2,w[k]+h/2*k2)\n",
" k4=myfun_ty(t[k]+h,w[k]+h*k3)\n",
" w[k+1]=w[k]+h/6*(k1+2*k2+2*k3+k4)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "HoEhZkVMiwHd"
},
"source": [
"## Plotting Results"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 302
},
"id": "NqpMeCMOiwHd",
"outputId": "32f20564-470c-46e3-9315-45fd44b9b533"
},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(figsize=(10,4))\n",
"# --- left hand plot\n",
"ax = fig.add_subplot(1,3,1)\n",
"plt.plot(t,w, '--o',color='green')\n",
"#ax.legend(loc='best')\n",
"plt.title('Numerical Solution h=%s'%(h))\n",
"\n",
"ax = fig.add_subplot(1,3,2)\n",
"plt.plot(t,y,'o',color='black')\n",
"plt.title('Exact Solution ')\n",
"\n",
"ax = fig.add_subplot(1,3,3)\n",
"plt.plot(t,y-w, 'o',color='red')\n",
"plt.title('Error')\n",
"# --- title, explanatory text and save\n",
"fig.suptitle(r\"$y'=t-y, y(0)=%s$\"%(IC), fontsize=20)\n",
"plt.tight_layout()\n",
"plt.subplots_adjust(top=0.85) "
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 203
},
"id": "HGJqtjyijALS",
"outputId": "2c767071-d58e-42af-e31b-834adaac6819"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" time t_i | \n",
" 4th Order Runge Kutta, w_i | \n",
" Exact | \n",
" Error |w-y| | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 0.0 | \n",
" 1.000000 | \n",
" 1.000000 | \n",
" 0.00000 | \n",
"
\n",
" \n",
" 1 | \n",
" 0.5 | \n",
" 0.713542 | \n",
" 0.713061 | \n",
" 0.00048 | \n",
"
\n",
" \n",
" 2 | \n",
" 1.0 | \n",
" 0.736342 | \n",
" 0.735759 | \n",
" 0.00058 | \n",
"
\n",
" \n",
" 3 | \n",
" 1.5 | \n",
" 0.946791 | \n",
" 0.946260 | \n",
" 0.00053 | \n",
"
\n",
" \n",
" 4 | \n",
" 2.0 | \n",
" 1.271100 | \n",
" 1.270671 | \n",
" 0.00043 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" time t_i 4th Order Runge Kutta, w_i Exact Error |w-y|\n",
"0 0.0 1.000000 1.000000 0.00000\n",
"1 0.5 0.713542 0.713061 0.00048\n",
"2 1.0 0.736342 0.735759 0.00058\n",
"3 1.5 0.946791 0.946260 0.00053\n",
"4 2.0 1.271100 1.270671 0.00043"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
"d = {'time t_i': t, '4th Order Runge Kutta, w_i': w,'Exact':y,'Error |w-y|':np.round(np.abs(y-w),5)}\n",
"df = pd.DataFrame(data=d)\n",
"df"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "uK_MhzMfjG0V"
},
"outputs": [],
"source": []
}
],
"metadata": {
"colab": {
"include_colab_link": true,
"name": "302_4th Order Runge Kutta.ipynb",
"provenance": []
},
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.4"
}
},
"nbformat": 4,
"nbformat_minor": 1
}